package com.blog.blog.mapper;

import com.blog.blog.po.UserPO;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    UserPO selectByUsername(String username);
    String selectRolesByUserId(Long userId);
    String selectPermsByUserId(Long userId);
    UserPO selectById(Long id);

    // 用户-角色绑定（管理用）
    java.util.List<Long> selectRoleIdsByUserId(Long userId);
    int deleteUserRoles(Long userId);
    int insertUserRole(@Param("userId") Long userId, @Param("roleId") Long roleId);

    java.util.List<UserPO> pageUsers(@Param("q") String q, @Param("offset") Integer offset, @Param("limit") Integer limit);
    long countUsers(@Param("q") String q);

    // 注册
    int insertUser(@Param("username") String username, @Param("password") String password, @Param("email") String email);
    Long selectRoleIdByCode(@Param("code") String code);

    // 个人资料
    int updateNickname(@Param("userId") Long userId, @Param("nickname") String nickname);
    int updatePassword(@Param("userId") Long userId, @Param("password") String encodedPassword);
    int updateAvatar(@Param("userId") Long userId, @Param("avatar") String avatarUrl);
    
    // 邮件通知相关
    String selectEmailById(Long userId);
}


